

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<stdlib.h>
#include<wait.h> 

int main()///僵尸进程
{
    pid_t id = fork();
    if(id < 0) return 1;
    else if(id == 0)
    {
        //子进程
        int cnt = 5;
        while(cnt--)
        {
            printf("I am child process, pid: %d, ppid：%d\n",getpid(    ),getppid()); 
            sleep(1);
        }
        exit(0);
    }
    else
    {
        //父进程
        int cnt = 10;
        while(cnt--)
        {
            printf("I am father process, pid: %d, ppid：%d\n",getpid    (),getppid());
            sleep(1);
        }
    }
    wait(NULL);
                                                                     
    printf("father wait child done...\n");
    sleep(5);
}



//int main()//不可中断
//{
//  if(vfork()==0)
//  {
//    sleep(300);
//    exit(0);
//
//
//    }
//}



//int main()//运行状态,暂停状态
//{
//  int n=0;
//  for(int i=0;i<1000000; i++ )
//  {
//
//       for(int i=0;i<1000000; i++ )
//       {
//      printf("I am child process, pid: %d, ppid：%d\n",getpid(    ),getppid()); 
//        n++;
//       }
//   
//    
//  }
//}

//int main()//可中断暂停
//{
//   while(1)
//   {
//
//      printf("I am child process, pid: %d, ppid：%d\n",getpid(    ),getppid()); 
//   sleep(1);
//   }
//}









//#include <stdio.h>  
//#include <pthread.h>  
//#include <unistd.h>  
//
//int count = 1; // 初始化 count 变量为 1  
//
//void* increment_count(void* arg) {  
//    count++; // 线程自增 count  
//    printf("Thread %ld: count = %d\n", (long)arg, count);  
//    return NULL;  
//}  
//
//int main() {  
//    pthread_t thread1, thread2;  
//    
//    // 创建第一个线程  
//    pthread_create(&thread1, NULL, increment_count, (void*)1);  
//    
//    // 创建第二个线程  
//    pthread_create(&thread2, NULL, increment_count, (void*)2);  
//    
//    // 等待两个线程完成  
//    pthread_join(thread1, NULL);  
//    pthread_join(thread2, NULL);  
//    
//    // 父线程自增 count  
//    count++;  
//    printf("Parent: count = %d\n", count);  
//    
//    return 0; // 结束程序  
//}


//#include<stdio.h>  
//#include <unistd.h>  
//#include <sys/types.h>  
//
//int main() {  
//    int count = 1; // 初始化 count 变量为 1  
//
//    // 创建第一个子进程  
//    pid_t pid1 = fork();  
//
//    if (pid1 < 0) {  
//        // fork 失败  
//        perror("Fork failed");  
//        return 1;  
//    } else if (pid1 == 0) {  
//        // 子进程 1  
//        count++; // 自增 count  
//        printf("Child 1: count = %d\n", count);  
//    } else {  
//        // 父进程，创建第二个子进程  
//        pid_t pid2 = fork();  
//
//        if (pid2 < 0) {  
//            // fork 失败  
//            perror("Fork failed");  
//            return 1;  
//        } else if (pid2 == 0) {  
//            // 子进程 2  
//            count++; // 自增 count  
//            printf("Child 2: count = %d\n", count);  
//        } else {  
//            // 父进程  
//            count++; // 自增 count  
//            printf("Parent: count = %d\n", count);  
//        }  
//    }  
//
//    return 0; // 结束程序  
//}
